Large-scale networked systems are commonplace platforms employed in a variety of settings for running applications and maintaining data for business and operational functions. For instance, a data center (e.g., physical cloud computing infrastructure) may provide a variety of services (e.g., web applications, email services, search engine services, etc.) for a plurality of customers simultaneously. These large-scale networked systems typically include a large number of resources distributed throughout the data center, in which each resource resembles a physical machine or a virtual machine (VM) running on a physical node or host. When the data center hosts multiple tenants (e.g., customer programs), these resources are optimally allocated from the same data center to the different tenants.
Often, multiple VMs will concurrently run on the same physical node within a computing network, or the data center. These VMs that share a common physical node may be allocated to the different tenants and may require different amounts of resources at various times. For instance, the resources may include a physical disk (e.g., hard-disk driver) associated with a physical node, where the physical disk has a limited amount of accessibility over a certain time frame. When one tenant requires an increased usage of physical disk to accomplish a particular task, the tenant's VMs running on the physical node can potentially stress the physical disk by sending a large amount of requests thereto, preventing other VMs running on the physical node from fairly sharing the resources thereof.
Presently, because disk input/output (I/O) performance (e.g., time to access a segment of data) typically lags behind CPU-performance (e.g., processor speed) and network performance (e.g., bandwidth usage) of the VMs running on the physical node, there exists basic approaches for metering the requests sent from the VMs to the physical disk. These approaches meter requests by attempting to describe disk I/O performance using either the rate of storage (MB/sec) or, in the alternative, the rate of activity (requests/sec). In the instance of using MB/sec, this approach considers a size of data being read or written, but not how the data is arranged within the physical disk. On the other hand, in the instance of using requests/sec, this approach considers a number of times a disk head is asked to move over the physical disk within a given time frame. That is, using the requests/sec approach does not consider the size of data that is being accessed upon movement of the disk head.
Accordingly, because the MB/sec-based approach (relevant to sequential access only) and the request/sec-based approach (relevant to random access only) are each focused on a different specific aspect of disk I/O performance, these existing approaches fail to account for both sequential access and random access on the physical disk. For example, the MB/sec-based approach is focused on sequential accesses, thus, assuming the risk of being overwhelmed by a flood of random accesses and generating a backlog of requests. On the other hand, the request/sec-based approach is focused on random accesses, thus, assuming the risk of encountering a string of sequential accesses and unnecessarily limiting the amount of throughput to the physical disk. Consequently, failing to account for sequential access and random access, or to recognize the dramatic differences in resultant disk I/O performance between them, renders these approaches ineffective.